Appearance
JD2 进制转换
本节目标:理解“JD2 进制转换”的核心思路,并能把它用于实际开发或面试表达。 描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 数据范围:保证结果在 1≤n≤231−1 输入描述: 输入一个十六进制的数值字符串。 输出描述: 输出该数值的十进制字符串。不同组的测试用例用\n隔开。 示例1 输入: 0xAA ==复制== 输出: 170
def hex_to_decimal(hex_str):
将十六进制字符串转换为十进制整数
decimal = int(hex_str, 16) return decimal
示例输入
hex_str = input("请输入十六进制数:")
输出转换结果
print(hex_to_decimal(hex_str))
如果你想要手动实现十六进制到十进制的转换,而不依赖于编程语言提供的内置方法,可以通过以下步骤实现:
理解十六进制和十进制:十六进制是一种基数为16的数制,使用数字0到9和字母A到F表示。其中,A到F代表的十进制数值分别是10到15。十进制是我们平常使用的基数为10的数制。
算法步骤:
- 从右到左(即从最低位到最高位)遍历十六进制数的每一位。
- 将每一位的十六进制数转换为对应的十进制数值。
- 将每一位的十进制数值乘以16的幂次(幂次从0开始,每向左一位幂次加1)。
- 将上述所有结果相加,得到最终的十进制数值。
下面是一个不使用内置方法,手动实现十六进制到十进制转换的Python示例:
def hex_to_dec(hex_str):
移除可能的十六进制前缀
if hex_str.startswith("0x") or hex_str.startswith("0X"): hex_str = hex_str[2:]
定义一个字典,映射每个十六进制字符到其对应的十进制值
hex_to_dec_map = { '0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, 'a': 10, 'b': 11, 'c': 12, 'd': 13, 'e': 14, 'f': 15 }
初始化十进制数值为0
dec_value = 0
遍历十六进制字符串的每一位
for i, char in enumerate(reversed(hex_str)):
将十六进制位转换为十进制,乘以相应的16的幂
dec_value += hex_to_dec_map[char] * (16 ** i) return dec_value
示例
hex_str = "0xAA" print(hex_to_dec(hex_str)) # 输出: 170
这段代码首先定义了一个将十六进制字符映射到对应十进制值的字典hex_to_dec_map。然后,它遍历输入的十六进制字符串(如果有前缀0x或0X,则先移除这个前缀),对每一位字符使用字典进行转换,并计算每一位的十进制值,最后将这些值相加得到最终的十进制结果。
